package com.hrm.houfei.biz.impl;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.hrm.houfei.biz.IHrmConfigBiz;
import com.hrm.houfei.dao.IHrmConfigDAO;
import com.hrm.houfei.po.Hrmconfig;
import com.hrm.houfei.vo.QueryHrmConfigGroupByItemResult;

public class HrmConfigBizImpl implements IHrmConfigBiz {

	// 数据字典设置dao接口
	IHrmConfigDAO ihcdao = null;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.hrm.houfei.biz.impl.IHrmConfigBiz#setIhcdao(com.hrm.houfei.dao.IHrmConfigDAO)
	 */
	public void setIhcdao(IHrmConfigDAO ihcdao) {
		this.ihcdao = ihcdao;
	}

	public HrmConfigBizImpl() {
		super();
	}


	
	/**
	 * 根据条件查询获取总记录的条数
	 * 
	 * @param condition
	 * @return
	 */
	public int getListCountByCondition(Hrmconfig condition) {
		// 断线查询
		DetachedCriteria criteria = DetachedCriteria.forClass(Hrmconfig.class);
		// 如果条件cfgItem(条目)不为空,则将条件附加上
		if (null != condition.getCfgItem()
				&& !"".equals(condition.getCfgItem())) {
			criteria.add(Restrictions.like("cfgItem", condition.getCfgItem(),
					MatchMode.ANYWHERE));
		}
		int result = this.ihcdao.getListCoutByCondition(criteria);
		return result;
	}

	/**
	 * 执行多条件分页模糊查询
	 * 
	 * @param condition
	 *            条件
	 * @param start
	 *            索引
	 * @param limit
	 *            每页要显示的记录的条数
	 * @return 当前页的所有记录
	 */
	public List<Hrmconfig> findByPage(Hrmconfig condition, String start,
			String limit) {
		// 如果参数start,limit为空,则给其赋个默认值
		if (null == start || "".equals(start)) {
			start = "0";
		}
		if (null == limit || "".equals(limit)) {
			limit = "10";
		}
		// 断线查询
		DetachedCriteria criteria = DetachedCriteria.forClass(Hrmconfig.class);

		// 如果条件cfgItem(条目)不为空,则将条件附加上
		if (null != condition.getCfgItem()
				&& !"".equals(condition.getCfgItem())) {
			criteria.add(Restrictions.like("cfgItem", condition.getCfgItem(),
					MatchMode.ANYWHERE));
		}

		// 降序排序
		criteria.addOrder(Order.desc("cfgId"));

		// 进行分页查询
		List<Hrmconfig> list = this.ihcdao.findByPage(criteria, Integer
				.parseInt(start), Integer.parseInt(limit));
		return list;
	}

	/**
	 * 根据字典条目名称查询出该名称的所有信息
	 * 
	 * @param itemName
	 *            条目名称
	 * @return List<Hrmconfig>
	 */
	public List<Hrmconfig> findByItem(String itemName) {
		List<Hrmconfig> list = this.ihcdao.findByProperty("cfgItem", itemName);
		return list;
	}

	/**
	 * 分组显示所有数据字典条目
	 * 
	 * @return
	 */
	public List findAllByGroup() {
		List list = this.ihcdao.findAllGroupByItem("cfgItem");
		return list;
	}

	/**
	 * 添加数据字典条目
	 * 
	 * @param hrmconfig
	 * @return
	 */
	public boolean addDD(Hrmconfig hrmconfig) {
		try {
			this.ihcdao.save(hrmconfig);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 修改数据字典信息
	 * 
	 * @return
	 */
	public boolean updateDD(Hrmconfig entity) {
		try {
			this.ihcdao.updateHrmconfig(entity);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 查询出所有薪酬项目的值
	 * 
	 * @return List
	 */
	public List findMoneyItem() {
		String hql = "select cfgValue from Hrmconfig where cfgItem='薪酬项目'";
		List list = this.ihcdao.findByHql(hql);
		return list;
	}
}
